package h_eekwan.basic;

public class J14_StaticMember {

	public static void main(String[] args) {
		// 
		Car car1 =
				new Car("알페온", "eAssist", 2, 512908);
		// car1 객체가 생성되면
		// 정적변수 total에 1을 증가시킴
		Car car2 = 
				new Car("jonda", "t320",2, 514703);
		// car2 객체가 생성되면
		// 마찬가지로 정적변수 total에 1을 증가시킴
		System.out.println(car1.getCounter());
		System.out.println(car2.getCounter());
		System.out.println(Car.total);
	}

}

// 차량정보를 다루는 클래스 : Car
// 제조사 : maker
// 모델명 : model
// 문짝수 : doors
// 차량번호 : counter

class Car{
	private String maker;
	private String model;
	private int doors;
	private int counter;
	// 멤버변수 maker, model, doors, counter등은
	// new 연선자로 객체를 생성할 때 변수가 만들어 짐
	public static int total;		// 정적멤버변수
	// 하지만, 정적변수 total은
	// 프로그램이 실행될 때 미리 변수가 만들어 짐
	
	//생성자 정의
	public Car(){}	 // 기본 생성자
	// 모든 멤버변수를 초기화하는 생성자 정의
	public Car( String maker, String model, int doors, int counter){	
	
		this. maker = maker;
		this. model = model;
		this. doors = doors;
		this. counter = counter;
		++total;	// Car 객체가 생성될때마다 total 증가
	}
	// 일부 멤버변수를 초기화하는 생성자 정의
	// 문짝이 4개이고 카운터가 0인 차량 등록시 사용
	public Car( String maker, String moder) {
		
//		this. maker = maker;
//		this. model = model;
		this(maker, moder, 4, 1);
		// 기존의 만들어진 생성자를 간편하게 호출하기 위해
		// this라는 접두사를 사용
		
		++total;	// Car  객체가 생성될 때마다 total 증가
	}
	// setter/ getter 메서드 정의  Ctrl + Shift + S  -> Generate getter and setter or 화면 우클릭 Source ->  
	
	// toString 
	@Override
	public String toString() {
		String carAll = "";
		carAll += " 제조사 : " + maker;
		carAll += " 모델명 : " + model;
		carAll += " 문짝수 : " + doors;
		carAll += " 차량번호 : " + counter;
		
		return carAll.toString();
	}
	
	public String getMaker() {
		return maker;
	}
	public void setMaker(String maker) {
		this.maker = maker;
	}
	public String getModel() {
		return model;
	}
	public void setModel(String model) {
		this.model = model;
	}
	public int getDoors() {
		return doors;
	}
	public void setDoors(int doors) {
		this.doors = doors;
	}
	public int getCounter() {
		return counter;
	}
	public void setCounter(int counter) {
		this.counter = counter;
	}

	
}